1. Field of the Invention
The present invention is related to Virtual Servers, and more particularly, to control means for isolated Virtual Servers that appear to a user as a stand-alone server, and more particularly still, to control means for non-responsive or failed Virtual Servers.
2. Description of the Related Art
With the popularity and success of the Internet, server technologies are of great commercial importance today. An individual server application typically executes on a single physical host computer, servicing client requests. However, providing a unique physical host for each server application is expensive and inefficient.
For example, commercial hosting services are often provided by an Internet Service Provider (ISP) (which can be a data center, an IT department, a hosting service, etc.), which generally provides a separate physical host computer for each customer on which to execute a server application. However, a customer purchasing hosting services will often neither require nor be amenable to paying for use of an entire host computer. In general, an individual customer will only require a fraction of the processing power, storage, and other resources of a host computer.
Accordingly, hosting multiple server applications on a single physical computer is desirable. In order to be commercially viable, however, every server application needs to be isolated from every other server application running on the same physical host. In that context, a single computer system (usually called a “host”) supports multiple virtual servers (e.g., Virtual Private Servers or VPSs), sometimes as many as hundreds or thousands of VPSs.
Many applications involving such virtualization concepts as Virtual Private Servers (VPS) involve the use of VPSs in the context of webservers. Such a VPS therefore has an assigned IP address, and various other parameters associated with a webserver, for example, a URL, a DNS name, etc.
A typical situation where VPSs can be used is a single “box” (in other words, a single computer) located in a data center. The box has a host operating system and a plurality of VPSs (VPS1, VPS2, VPS3, etc.), each of which appears to the user as a single dedicated webserver. The user is therefore unaware that the VPS is something other than an entire “box” dedicated to that particular user. Typically, each VPS has a control panel, or some other analogous mechanism, through which the user can control the behavior of his VPS. In other words, as an administrator of that VPS, the user has substantial control over the behavior of that VPS, so long as the host operating system permits the actions at issue.
Similarly, the host operating system has its own control panel, which is available to the system administrator to control the various functions of the host as well as to regulate the activities of the various tasks. Normally, the control panel of the host operating system is available to the administrator of the data center, where the VPS is physically located. In actuality, a typical data center can have hundreds or even thousands of such boxes.
Each VPS usually includes a set of processes associated with that VPS and has an address, e.g., host name or IP address, by which a user can establish connections with processes associated with a certain VPS. A VPS can have a control procedures as a common set of procedures. A control procedure is typically required for such things as VPS monitoring, configuration and for controlling the VPS. Each control procedure may be accessed by using an address corresponding to that procedure.
Since the control procedure normally running within the VPS is inaccessible if the VPS is inoperable, the control procedure(s) outside VPS may be used for controlling VPS operation and performance.
The problem with a common approach is that the user needs to use different addresses for establishing connection to the control procedures that in turn depend on the state of the VPS. Such a control procedures cannot be used to investigate whether the VPS is active before establishing the connection. Also, the user has to remember proper address and configuration settings to use such a control procedure, which are often different from what is required for VPS administration itself.
Furthermore, some control or monitoring activities can be performed using either internal or external control interfaces, but the graphical user interface (GUI) can be different, and the user who needs to control the VPS often needs special training, e.g., to be able to choose the proper address not merely based on the VPS condition, but also based on the action required.
Normally, the VPSs communicate with the outside world using I/O ports of the computer, which are connected to some sort of network, such as the internet, a LAN, etc. Each such VPS is associated with an IP address, as noted above, which the outside world uses to access that particular VPS. A problem can arise if for some reason, the VPS should “break,” or crash, etc. In the case of a problem with physical hardware, a software resolution of this problem is usually not practical, other than to restart the VPS on a different machine. However, many VPS crashes occur due to activities of the VPS itself—for example, the VPS is affected by a virus, or the user is running code that triggers a VPS crash, etc. That VPS is therefore unavailable to the user trying to access the VPS, because there is nothing responding to the user. Thus, the user has no mechanism to get a crashed VPS to respond to it, and normally has to contact someone at the data center who can restart the VPS manually. This is frequently a problem in that it takes time, data center personnel are not always instantly available, the data center itself may be under-staffed, particularly if the VPS crash occurs at a period of the day when few people are at work at the data center, etc. Thus, for a number of mission-critical, or commercially important applications, this is unacceptable, since a crashed and unresponsive VPS can result in lost sales, poor performance, etc.
Accordingly, what is needed is a system and method for remotely controlling and monitoring a failed VPS, without manual intervention by the data center administrator, and for a convenient method for remotely controlling failed virtual servers.